package cn.codergege.kotlinclass.classandinheritance

class A
/*
public final class A {
}
 */

/**
 *  lateinit var c: A 会生成 public A c; 并有 getter setter
 */
class B {
    val a: String = "a"
    var b: Int? = 0
    // lateinit var 不能用在基本类型上
    lateinit var c: A
}


/*
public C(int a, int b) { ... }
 */
class C(val a: Int, var b: Int)

// a 是属性, b 只是构造函数的形参罢了
class D(val a: Int, b: Int)
/*
public final class D {
   private final int a;

   public final int getA() {
      return this.a;
   }

   public D(int a, int b) {
      this.a = a;
   }
}
 */

/*
下面这个和 class E(var a: Int, var b: Int) 没区别
 */
class E {
    var a: Int = 0
    var b: Int = 0

    constructor(a: Int, b: Int) {
        this.a = a
        this.b = b
    }
}

// 会额外生成默认构造函数
class F(val a: Int = 1, val b: Int = 2)



